/**
 * axios封装
 * 请求拦截、响应拦截、错误统一处理
 */

import axios from 'axios';
import alertTip from '../alertTip';
import {getCookie, setCookie} from '@/utils/cookiesUtil.js'
import getOauth from '@/common/getOauth';
import {getQuery} from '@/utils/utils'
import base from '@/common/services/base';
const apiUrl = base.test;
const frontEnd = base.frontEnd;

/**
 * 当token不存在，返回的状态码为504 的时候需要去获取微信授权
 */

/**
 * 请求失败后的错误统一处理
 * @param {Number} status 请求失败的状态码
 */
const errorHandle = (status, other) => {
  // 状态码判断
    uni.showToast({
		position: 'bottom',
		icon: 'none',
		title: other
	});
  switch (status) {
    case 500:
		console.log('Token失效，请重新登录:', other === 'Token失效，请重新登录')
		if (other === 'Token失效，请重新登录') {
			window.location.href = `http://${window.location.host}/pages/login/login`;
		}
		return;
    default:
      console.log(other);
  }
}

// 创建axios实例
var instance = axios.create({timeout: 1000 * 12});
// 设置post请求头
instance.defaults.headers.post['Content-Type'] = 'application/json';
instance.defaults.headers['Content-Security-Policy'] = "upgrade-insecure-requests";
/**
 * 请求拦截器
 * 每次请求前，如果存在token则在请求头中携带token
 */
instance.interceptors.request.use(
  async config => {
    // 登录流程控制中，根据本地是否存在token判断用户的登录情况
    // 但是即使token存在，也有可能token是过期的，所以在每次的请求头中携带token
    const token = getCookie('token');
    config.headers['X-Access-Token'] = `${token}`;
	// uni.showLoading();
    return config;
  },
  error => {
    Promise.error(error)
  }
)

// 响应拦截器
instance.interceptors.response.use(
  // 请求成功
  res => {
	if (res.data.success) {
		if( res.data.message !== '操作成功！' && res.data.message !==  '删除成功!') {
			uni.showToast({
				icon: 'none',
				position: 'bottom',
				title: res.data.message
			});
		}
		return Promise.resolve(res.data.result)
	} else {
		if (res.data.message !==  'query ok') {
			uni.showToast({
				icon: 'none',
				position: 'bottom',
				title: res.data.message
			});
		} else {
			return Promise.resolve(res.data.result)
		}
		if (res.code === 500 || res.data.message === 'Token失效，请重新登录') {
		   location.href = `${apiUrl}/pages/login/login`;
		}
		return Promise.reject(res)
	}
  },
  // 请求失败
  error => {
    const {response} = error;
	// if (response.status === 500 || response.data.message === 'Token失效，请重新登录') {
	//    location.href = `${apiUrl}/pages/login/login`;
	// }
    if (response) {
      // 请求已发出，但是不在2xx的范围
	  if (response.data.path !== "/xsmall/usergoodscart/userGoodsCart/appauthapi/getGoodsCartList") {
		 errorHandle(response.status, response.data.message);
	  }
      return Promise.reject(response);
    }
  });

export default instance;